package com.hdoit.ares.selfcommon.utils;

import java.util.Collections;
import java.util.List;

import com.hdoit.ares.logical.acc.model.CustomerDemo;
import com.hdoit.ares.selfcommon.enums.acc.CustomerDemoLevel;



public class DistributeWealthDemoUtil {
	/*
	 * 将查出来的利润受益者和奖励百分比传入
	 * promoto      推广奖百分比利润
	 * firstShare   一级分享奖
	 * secondShare  二级分享奖
	 * server       服务奖
	 * hatch        孵化奖
	 * CustomerDemos    利润受益者
	 */
	public static List<CustomerDemo> toDistribute(double promoto,double firstShare,double secondShare,
			double server,double hatch,List<CustomerDemo> customerDemos){
		int size = customerDemos.size();
		//将利润受益者按照上下级排序，第i个是滴i+1个的子代
		Collections.sort(customerDemos); 
		//判断购买者身份是否为游客或者会员
		CustomerDemo customerDemo = customerDemos.get(0);
		if(CustomerDemoLevel.visitor.equals(customerDemo.getLevel()) || CustomerDemoLevel.vip.equals(customerDemo.getLevel())){
			firstShare += promoto;
			promoto = 0.0;
		}
		customerDemos.get(0).setPromote(promoto);
		customerDemos.get(0).setTempPercentege(promoto);
		//根据利润分配者人数调用不同的分配方案
		if(size == 1){
			return onePerson(promoto,firstShare,secondShare,server,hatch,customerDemos);
		}else if(size == 2){
			return twoPerson(promoto,firstShare,secondShare,server,hatch,customerDemos);
		}else if(size == 3){
			return threePerson(promoto,firstShare,secondShare,server,hatch,customerDemos);
		}else if(size == 4){
			return fourPerson(promoto,firstShare,secondShare,server,hatch,customerDemos);
		}else if(size == 5){
			return fivePerson(promoto,firstShare,secondShare,server,hatch,customerDemos);
		}
		
		return null;
	}
	
	
    
	//利益分配者是一个人
	private static List<CustomerDemo> onePerson(double promoto, double firstShare, double secondShare,
			double server,double hatch, List<CustomerDemo> customerDemos) {
		CustomerDemo CustomerDemo = customerDemos.get(0);
		if(!(CustomerDemoLevel.visitor.equals(CustomerDemo.getLevel()) || CustomerDemoLevel.vip.equals(CustomerDemo.getLevel()))){
			customerDemos.get(0).setTempPercentege(promoto);
		}
		return customerDemos;      
	}
    
	//利益分配者是俩个人
	private static List<CustomerDemo> twoPerson(double promoto, double firstShare, double secondShare,
			double server,double hatch, List<CustomerDemo> customerDemos) {
		//必拿一级分享奖
		customerDemos.get(1).setTempPercentege(firstShare);
		customerDemos.get(1).setFirstShare(firstShare);
		CustomerDemo customerDemo = customerDemos.get(0);
		if(!(CustomerDemoLevel.visitor.equals(customerDemo.getLevel()) || CustomerDemoLevel.vip.equals(customerDemo.getLevel()))){
			/*CustomerDemos.get(0).setTempPercentege(promoto);*/
			if(CustomerDemoLevel.highMaker.equals(customerDemo.getLevel())){
				if(CustomerDemoLevel.highMaker.equals(customerDemos.get(1).getLevel())){
					//拿孵化奖
					customerDemos.get(1).setTempPercentege(firstShare + hatch);
					customerDemos.get(1).setHatch(hatch);
				}
			}
		}else{
			if(CustomerDemoLevel.highMaker.equals(customerDemos.get(1).getLevel())){
				//服务奖
				customerDemos.get(1).setTempPercentege(firstShare + server);
				customerDemos.get(1).setServer(server);
			}
		}
		return customerDemos;
	}
    
	//利益分配者是三个人
	private static List<CustomerDemo> threePerson(double promoto, double firstShare, double secondShare,
			double server,double hatch, List<CustomerDemo> customerDemos) {
		CustomerDemo customerDemo = customerDemos.get(0);
		//一级分享奖和二级分享奖必拿
		customerDemos.get(1).setTempPercentege(firstShare);
		customerDemos.get(1).setFirstShare(firstShare);
		customerDemos.get(2).setTempPercentege(secondShare);
		customerDemos.get(2).setSecondShare(secondShare);
		if(CustomerDemoLevel.highMaker.equals(customerDemo.getLevel())){
			//孵化奖
			if(CustomerDemoLevel.highMaker.equals(customerDemos.get(1).getLevel())){
				customerDemos.get(1).setTempPercentege(firstShare + hatch);
				customerDemos.get(1).setHatch(hatch);
			}
			return customerDemos;
		}
		
		if(CustomerDemoLevel.highMaker.equals(customerDemos.get(1).getLevel())){
			if(!CustomerDemoLevel.highMaker.equals(customerDemo.getLevel())){
				customerDemos.get(1).setTempPercentege(firstShare + server);
				customerDemos.get(1).setServer(server);
			}
			
			//拿孵化奖
			if(CustomerDemoLevel.highMaker.equals(customerDemos.get(2).getLevel())){
				customerDemos.get(2).setTempPercentege(secondShare + hatch);
				customerDemos.get(2).setHatch(hatch);
			}
		}else{
			//拿服务奖
			if(CustomerDemoLevel.highMaker.equals(customerDemos.get(2).getLevel())){
				customerDemos.get(2).setTempPercentege(secondShare + server);
				customerDemos.get(2).setServer(server);
			}
		}
		
		return customerDemos;	
	}
    
	//利益分配者是四个人
	private static List<CustomerDemo> fourPerson(double promoto, double firstShare, double secondShare,
			double server,double hatch, List<CustomerDemo> customerDemos) {
		//一级分享奖和二级分享奖必拿且可以推断买家的上一级是初创
		CustomerDemo customerDemo = customerDemos.get(0);
		if(!(CustomerDemoLevel.visitor.equals(customerDemo.getLevel()) || CustomerDemoLevel.vip.equals(customerDemo.getLevel()))){
			/*CustomerDemos.get(0).setTempPercentege(promoto);*/
		}
		customerDemos.get(1).setTempPercentege(firstShare);
		customerDemos.get(1).setFirstShare(firstShare);
		customerDemos.get(2).setTempPercentege(secondShare);
		customerDemos.get(2).setSecondShare(secondShare);
		if(CustomerDemoLevel.highMaker.equals(customerDemos.get(2).getLevel())){
			//得到服务奖
			customerDemos.get(2).setTempPercentege(secondShare + server);
			customerDemos.get(2).setServer(server);
			//得到孵化将
			customerDemos.get(3).setTempPercentege(hatch);
			customerDemos.get(3).setHatch(hatch);
		}else{
			//得到服务奖
			customerDemos.get(3).setTempPercentege(server);
			customerDemos.get(3).setServer(server);
		}
		return customerDemos;
		
	}
    
	//利益分配者是五个人
	private static List<CustomerDemo> fivePerson(double promoto, double firstShare, double secondShare,
			double server,double hatch, List<CustomerDemo> customerDemos) {
		/*CustomerDemo CustomerDemo = CustomerDemos.get(0);
		if(!(CustomerDemoLevel.visitor.equals(CustomerDemo.getLevel()) || CustomerDemoLevel.vip.equals(CustomerDemo.getLevel()))){
			CustomerDemos.get(0).setTempPercentege(promoto);
		}*/
		customerDemos.get(1).setTempPercentege(firstShare);
		customerDemos.get(1).setFirstShare(firstShare);
		customerDemos.get(2).setTempPercentege(secondShare);
		customerDemos.get(2).setSecondShare(secondShare);
		customerDemos.get(3).setTempPercentege(server);
		customerDemos.get(3).setServer(server);
		customerDemos.get(4).setTempPercentege(hatch);
		customerDemos.get(4).setHatch(hatch);
		return customerDemos;	
	}
}
